<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>01</title>
</head>
<body>
<script>
    /*
     * 使用构造函数模式创建对象
     * 解决了创建多个对象需要重复写代码的问题、可以明确对象类型
     * 但是没有解决 对象方法不相同的问题（每个方法都需要在每个实例中重新创建一次）
     * 可以用全局函数解决，但是这种方法破坏了封装
     */

    /*
    function _sayName () {
        alert(this.name);
    };

     */
    function Person(name) {

        this.name = name;
        this.sayName = function () {
            alert(this.name);
        };

        //this.sayName = _sayName;
    }

    var p1 = new Person("zhangsan");
    var p2 = new Person("lisi");

    p1.sayName();//zhangsan
    p2.sayName();//lisi


    alert(p1.sayName == p2.sayName); //false

    alert(p1.constructor == p2.constructor); //true
    alert(p1.constructor == Person);

    alert(typeof p1); //object
    alert(p1 instanceof Object); //true
    alert(p1 instanceof Person); //true


</script>
</body>
</html>